package cam.School.DataAccessObject;

import java.util.Date;
import java.util.List;

import cam.School.DAOException.DAOException;
import cam.School.DataTransfertObject.CallResult;
import cam.School.DataTransfertObject.ClassRoomDTO;
import cam.School.DataTransfertObject.EmployeeDTO;


public interface EmployeeDAO {
	
	public EmployeeDTO getById(Long id) throws DAOException;

	public List<EmployeeDTO> getAll() throws DAOException;

	public CallResult create(EmployeeDTO employee) throws IllegalArgumentException,
			DAOException;

	public CallResult update(EmployeeDTO employee) throws IllegalArgumentException,
			DAOException;

	public CallResult delete(long employeeId) throws Exception;

	public EmployeeDTO getByFirstName(String firstName);
	
	public EmployeeDTO getByFirstAndLastName(String firstName, String lastName);

	public EmployeeDTO getByLastNameAndBirthday(Date birthday, String lastName);

	public EmployeeDTO getByProfession(String profession);

	public EmployeeDTO getByImmatricutionNumber(String immatriculationNumber);

	public EmployeeDTO find(String username, String password);

	public int update(String username, long id);
	
	public List<EmployeeDTO> getProfessorBySubjectName(String className);
	
	
	
	public List<EmployeeDTO> getProfessorByClassGroup(String classGroup);

	public List<EmployeeDTO> getByRange(int startIndex, int count) throws DAOException;

}
